package;


import flixel.FlxG;
import flixel.FlxSprite;
import flixel.FlxState;
import flixel.text.FlxText;
import flixel.ui.FlxButton;
import flixel.util.FlxMath;
import flixel.util.FlxColor;
import flixel.addons.text.FlxTypeText;
import flixel.util.FlxRandom;
import flixel.tweens.FlxTween;
import flixel.util.FlxRandom;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.media.SoundTransform;
import openfl.Assets;

/**
 * A FlxState which can be used for the game's menu.
 */
class MezclaState extends PreguntaState
{
	/**
	 * Function that is called up when to state is created to set it up. 
	 */
	
	private var imagenes:Array<FlxSprite>;
	private var respuestas:Array<FlxText>;
	private var count:Int = 10;
	private var position:Float;
	private var shuffle:Sound;
	
	override public function create():Void
	{
		super.create();
		estado = "esperando2";
		remove(player1);
		remove(player2);
		remove(player3);
		remove(player4);
		imagenes = [_imagenRespuesta1, _imagenRespuesta2, _imagenRespuesta3, _imagenRespuesta4];
		respuestas = [_respuesta1, _respuesta2, _respuesta3, _respuesta4];
		shuffle = Assets.getMusic ("assets/music/shuffle.wav");
		textoAzul.visible = false;
		textoRojo.visible = false;
		textoVerde.visible = false;
		textoAmarillo.visible = false;
	}
	
	private function tweenEnd(tween:FlxTween):Void 
	{
		estado = "mezclando";
	}
	
	override function update():Void
	{
		super.update();		
		trace(answer);
		switch(estado)
		{
			case "esperando2":
				_reloj -= FlxG.elapsed;
				_relojTexto.text = Std.string(Std.int(_reloj));
				if (_reloj < 11)
				{
					var tween = FlxTween.tween(_respuesta1,{alpha:0},1,{complete:tweenEnd});
					var tween = FlxTween.tween(_respuesta2,{alpha:0},1);
					var tween = FlxTween.tween(_respuesta3,{alpha:0},1);
					var tween = FlxTween.tween(_respuesta4,{alpha:0},1);
					estado = "nada";
					position = channel.position;
					channel.stop();
					channel = shuffle.play();
				}
				
			case "mezclando":
				count--;
				if (count > 0)
				{
					var rand1:Int = FlxRandom.intRanged(0, 3);
					var rand2:Int = rand1;
					while (rand2 == rand1)
						rand2 = FlxRandom.intRanged(0, 3);
					if (answer == (rand1 + 1))
						answer = (rand2 + 1);
					else if (answer == (rand2 + 1))
						answer = (rand1 + 1);
					var imagen1:FlxSprite = imagenes[rand1];
					var imagen2:FlxSprite = imagenes[rand2];
					imagenes[rand1] = imagen2;
					imagenes[rand2] = imagen1;
					var resp1:FlxText = respuestas[rand1];
					var resp2:FlxText = respuestas[rand2];
					respuestas[rand1] = resp2;
					respuestas[rand2] = resp1;
					var tween = FlxTween.tween(imagen1,{x:imagen2.x,y:imagen2.y},1,{complete:tweenEnd});
					var tween = FlxTween.tween(resp1,{x:resp2.x,y:resp2.y},1);
					var tween = FlxTween.tween(imagen2,{x:imagen1.x,y:imagen1.y},1);
					var tween = FlxTween.tween(resp2, { x:resp1.x, y:resp1.y }, 1);
					estado = "nada";
				}
				else
				{
					add(player1);
					add(player2);
					add(player3);
					add(player4);
					textoAzul.visible = true;
					textoRojo.visible = true;
					textoVerde.visible = true;
					textoAmarillo.visible = true;
					textoAzul.text = "";
					textoRojo.text = "";
					textoVerde.text = "";
					textoAmarillo.text = "";
					_imagenRespuesta1 = imagenes[0];
					_imagenRespuesta2 = imagenes[1];
					_imagenRespuesta3 = imagenes[2];
					_imagenRespuesta4 = imagenes[3];
					_respuesta1 = respuestas[0];
					_respuesta2 = respuestas[1];
					_respuesta3 = respuestas[2];
					_respuesta4 = respuestas[3];
					estado = "esperando3";
					channel.stop();
					channel = sound.play(position);
				}
				
			case "esperando3":
				_reloj -= FlxG.elapsed;
				_relojTexto.text = Std.string(Std.int(_reloj));
				if (_reloj < 1 || (player1.getInput() != -1 && player2.getInput() != -1 && player3.getInput() != -1 && player4.getInput() != -1))
				{
					_pregunta.start(0);
					textoAzul.visible = false;
					textoRojo.visible = false;
					textoVerde.visible = false;
					textoAmarillo.visible = false;
					estado = "mostrando";
					var tween = FlxTween.tween(_respuesta1,{alpha:1},1);
					var tween = FlxTween.tween(_respuesta2,{alpha:1},1);
					var tween = FlxTween.tween(_respuesta3,{alpha:1},1);
					var tween = FlxTween.tween(_respuesta4, { alpha:1 }, 1);
					if (_reloj > 1)
					{
						channel.stop();
						channel = sound.play(30000);
					}
				}
		}
	}

}